package com.itheima.thread.security.demo03;

public class SellTicket implements Runnable {

    // 记录要出售的总票数
    private int tickets = 100;
    private Object obj = new Object() ;             // 定义了一把锁

    @Override
    public void run() {

        while(true) {                               // 票没有了，也可能有人来问，所以这里用死循环让卖票的动作一直执行

            synchronized (obj) {                    // 这个对象可以是任意一个对象，但是有一个前提，多线程在进行访问的时候需要去使用同一个对象

                // 判断票数大于0，就卖票，并告知是哪个窗口卖的
                if(tickets > 0) {

                    // 模拟网络延迟
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                    System.out.println(Thread.currentThread().getName() + "正在出售第" + tickets + "张票");

                    // 卖了票之后，总票数要减1
                    tickets-- ;
                }

            }

        }

    }

}
